package com.wuxianedu.volley;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.android.volley.Cache;
import com.android.volley.Network;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.BasicNetwork;
import com.android.volley.toolbox.DiskBasedCache;
import com.android.volley.toolbox.HurlStack;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.xmlpull.v1.XmlPullParser;

public class MainActivity extends AppCompatActivity {

    public static final String TAG = "wuxianedu";

    private TextView tv;
    private RequestQueue queue;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tv = (TextView) findViewById(R.id.tv);
        requestGet();
       // requestGet2();

    }

    /**
     * 定义一个自己的requestqueue
     * 你所需要做的就两件事，1.设置网络客户端 2.设置请求队列的缓存
     *                       BasicNetwork      DiskBasedCache
     *
     */
    private void requestGet2() {
        // 初始化缓存对象
        Cache cache = new DiskBasedCache(getCacheDir(),1024*1024); // 1MB的缓存

        // 初始化网络客户端
        Network network = new BasicNetwork(new HurlStack());

        // 初始化请求队列
        queue = new RequestQueue(cache,network);

        // 开启队列
        queue.start();

        String url = "http://www.baidu.com";
        // 创建请求对象，添加到队列
        StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                tv.setText(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                tv.setText("由于未知的错误，导致失败！");
            }
        });

        //为 请求设置tag,用于最后的资源回收
        request.setTag(TAG);

        //把请求对象，添加到队列
        queue.add(request);
    }

    /**
     * volley的简单使用
     */
    private void requestGet() {
        //初始化默认的请求队列
        queue = Volley.newRequestQueue(this);
        String url = "http://10.0.2.2:8080/request";
        // 创建请求对象
        //1.请求方式  2.url 3.请求成功的回调接口  4.请求失败的回调接口
        StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                tv.setText(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                tv.setText("由于未知的错误，导致失败！");
            }
        });

        //为 请求设置tag,用于最后的资源回收
        request.setTag(TAG);

        //把请求对象，添加到队列
        queue.add(request);

    }




    @Override
    protected void onStop() {
        super.onStop();
        // 关闭队列
        if (queue != null){
            queue.cancelAll(TAG);
        }
    }
}
